/*
 【基础】修理牛棚 Barn Repair
  题目描述
    在一个月黑风高的暴风雨夜，Farmer John 的牛棚的屋顶、门被吹飞了好在许多牛正在度假，所以牛棚没有住满。
    牛棚一个紧挨着另一个被排成一行，牛就住在里面过夜。有些牛棚里有牛，有些没有。
    所有的牛棚有相同的宽度。
    自门遗失以后，Farmer John 必须尽快在牛棚之前竖立起新的木板。
    他的新木材供应商将会供应他任何他想要的长度，但是吝啬的供应商只能提供有限数目的木板。
    Farmer John 想将他购买的木板总长度减到最少。

    给出 m,s,c，表示木板最大的数目、牛棚的总数、牛的总数；以及每头牛所在牛棚的编号，
    请算出拦住所有有牛的牛棚所需木板的最小总长度。
  输入
    一行三个整数 m,s,c，意义如题目描述。
    接下来 c 行，每行包含一个整数，表示牛所占的牛棚的编号。
   【数据范围】
      对于 100% 的数据，1 ≤ m ≤ 50，1 ≤ c ≤ s ≤ 200。
  输出
    输出一行一个整数，表示所需木板的最小总长度。
  样例输入
    4 50 18
    3
    4
    6
    8
    14
    15
    16
    17
    21
    25
    26
    27
    30
    31
    40
    41
    42
    43
  样例输出
    25
  提示
    USACO Training Section 1.3
*/

#include <bits/stdc++.h>

using namespace std;

int a[203] = {};
int m, s, c;

int main() {
    int a[203] = {}; // a[i] 表示第 i (i > 0) 个牛棚的状态。0 -- 没牛，1 -- 有牛

    cin >> m >> s >> c;
    for (int i = 1; i <= c; i++) {
        int x;
        cin >> x;
        a[x]++;
    }

    int jl[205] = {};  // jl[i] 表示 第  i (i > 0) 个间隔的长度
    int y = 0;
    int x = 1;
    int start;   // 第一个牛的位置（下标）
    int end;     // 最后一个牛的位置（下标）

    // 求第一头牛的位置（下标）
    for (int i = 1; i <= s; i++) {
        if (a[i] != 0) {
            start = i;
            break;
        }
    }

    // 求最后一头牛的位置（下标）
    for (int i = s; i >= 1; i--) {
        if (a[i] != 0) {
            end = i;
            break;
        }
    }

    // 求第一头牛到最后一头牛 之间 总共有多少个间隔、每个间隔的长度
    for (int i = start; i <= end; i++) {
        if (a[i] == 0){
            y++;
        } else {
            if (y != 0){
                jl[x] = y;
                x++;
                y = 0;
            }
        }
    }
    // 说明: 此处 x - 1 表示有几个间隔

    // 求"第一头牛到最后一头牛"总共占据多少个牛棚长度
    int yi = 0;
    for (int i = start; i <= end; i++) {
        yi++;
    }

    // 对间隔按从小到大的顺序进行排序
    sort(jl + 1, jl + x);

    // 求间隔最大的 m-1 个间隔的长度之和；
    // 特别注意：如果间隔数量没有 m-1个，则取所有间隔长度之和
    long long xi = 0;
    int i = x - 1;
    int j = 1;
    while  (j < m) {
        xi = xi + jl[i];
        if (i == 1) {
            break;
        }
        i--;
        j++;
    }

    cout << yi - xi;

    return 0;
}